#!/usr/bin/env node

// Node CLI 应用入口文件必须要有这样的文件头
// 如果是 Linux 或者 macOS 系统下还需要修改此文件的读写权限为 755
// 具体就是通过 chmod 755 cli.js 实现修改

// 脚手架的工作过程：
// 1. 通过命令行交互询问用户问题
// 2. 根据用户回答的结果生成文件

const inquirer = require("inquirer");
const path = require("path");
const fs = require("fs");
const ejs = require("ejs");

inquirer
	.prompt([
		{
			type: "input", // 交互方式: 命令输入
			name: "name", // 问题的key
			message: "Project name", // 问题的提示
		},
	])
	.then((anwsers) => {
		// 模板目录
		const tmplDir = path.join(__dirname, 'templates')
		// 目标文件
		const destDir = process.cwd() // cwd: 获取当前执行文件的目录

		// 输出模板文件
		fs.readdir(tmplDir, (err, files) => {
			if (err) throw err
			files.forEach((file) => {
				// 通过模板引擎渲染文件
				// 第一个参数: 绝对路径
				// 第二个参数: 模板的上下文
				// 第三个参数: 回调
				ejs.renderFile(path.join(tmplDir, file), anwsers, (err, result) => {
					if (err) throw err
					// 输出模板文件
					fs.writeFileSync(path.join(destDir, file), result)
				})
			})
		})
	});
